Virtualization typically refers to the abstraction of resources in a computing environment. A virtualization scheme may involve hiding the physical characteristics of the resources from the way in which other systems, applications, or end users interact with those resources. For example, a single physical resource (e.g., a server, an operating system, an application, or storage device) may be configured to appear to function as multiple logical resources; or alternatively multiple physical resources (e.g., storage devices or servers) may be configured to appear as a single logical resource.
Virtualization is, therefore, advantageous in instances where a separation or abstraction of physical media from the logical representation of the storage is useful to simplify system configuration and management. For example, virtualization of physical storage volumes into logical storage volumes allows physical infrastructure changes and data management operations to be performed while logical or virtual volumes remain unchanged. Virtualization can also improve the performance of data access and writes through caching and striping, and the availability of data through techniques like mirroring, and data striping with distributed parity.
In a data storage system, particularly, several levels of virtualization are possible. Referring to FIG. 1, some storage virtualization levels may be defined as follows:                Database virtualization involving striping or other I/O optimization techniques performed across volumes by advanced databases (e.g., IBM® Universal DataBase). Databases can typically spread data across their table space containers and partitions through round robin or hashing techniques;        Filesystem virtualization involving striping performed at file level (e.g. IBM's General Parallel File System or GPFS);        Volume or block virtualization performed at multiple levels, such as host volume manager, network virtualization or storage subsystem. Redundant Array of Independent Drives (RAID) functionality can be implemented for performance (e.g. striping/RAID 0) and availability purposes (e.g. RAID 1 or RAID 5).        Storage network virtualization of volumes and RAID functions performed by storage subsystems (e.g., IBM's disk storage (DS) series or EMC's Symmetrix); and        virtualization performed by virtual tape libraries (e.g., IBM's Virtual Tape Server or VTS).        
Specific examples of block virtualization include:                volume virtualization and RAID functions performed by host volume managers and/or advanced operating systems (e.g., IBM's AIX Volume Manager or Symantec's Veritas Volume Manager); and        volume virtualization and RAID functions performed by network based storage virtualization solutions (e.g., IBM's storage area network (SAN) Volume Controller);        
As shown in FIG. 1, there are typically different users or administrative (admin) roles involved in creating optimized configurations, from their domain perspective at each virtualization level. This can lead to overall non-optimized virtualization configuration when analyzed across the entire system.
For example, at each virtualization level, one or perhaps more than one system administrator may try to use one or more of the above-mentioned different techniques to optimize the performance, security and integrity of stored data, for example, by way of managing caching, striping and redundancy of stored data.
In most cases, the administrator at one level does not have sufficient information about the optimization procedure and structure at the other levels. As a result, the optimization applied in one level may be redundant in light of optimization techniques applied at another level, or even in certain circumstances counterproductive.
Thus, methods and systems are needed that can overcome the aforementioned shortcomings.